package com.StarStudio.Service.Impl;

import com.StarStudio.DAO.GoodsStockDAO;
import com.ruoyi.common.core.Entity.GoodsStock;
import com.StarStudio.Service.GoodsStockService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


@Service
public class GoodsStockServiceImpl implements GoodsStockService {

    @Autowired
    GoodsStockDAO goodsStockDAO;

    /**
     * 根据条件查询商品库存对象集合
     * @param goodsStock 商品库存对象
     * @return 商品库存集合
     */
    @Override
    public List<GoodsStock> findGoodsStockList(GoodsStock goodsStock) {
        SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
        if (sysUser.isAdmin()){
            return goodsStockDAO.findGoodsStockList(goodsStock);
        }
        return goodsStockDAO.findGoodsStockListForNormalUser(goodsStock,sysUser.getUserId());
    }

    /**
     * 新增商品库存数据
     * @param goodsStock 商品库存对象
     */
    @Override
    public void addGoodsStock(GoodsStock goodsStock) {
        goodsStockDAO.addGoodsStock(goodsStock);
    }

    /**
     * 查询总记录数
     * @return 总记录数
     */
    @Override
    public long findAllRecordNumber() {
        return goodsStockDAO.findAllRecordNumber();
    }

    /**
     * 找出未售出的商品的个体ID集合
     * @param id 商品ID
     * @return 商品个体ID集合
     */
    @Override
    public List<Long> findUnsoldItemIdsByGoodsId(long id) {
        return goodsStockDAO.findUnsoldItemIdsByGoodsId(id);
    }

    @Override
    public void realDelete(long id) {
        goodsStockDAO.realDelete(id);
    }

    @Override
    public List<Long> findSoldItemIdsByGoodsId(long id) {
        return goodsStockDAO.findSoldItemIdsByGoodsId(id);
    }

    @Override
    public void updateDelFlag(long id) {
        goodsStockDAO.updateDelFlag(id);
    }

    @Override
    public List<Long> findGoodsStockIds(long goodsId, long storeId) {
        return goodsStockDAO.findGoodsStockIds(goodsId,storeId);
    }

    @Override
    public List<GoodsStock> findUnsoldItems(long goodsId, boolean flag) {
        return goodsStockDAO.findUnsoldItems(goodsId,flag);
    }

    @Override
    public void updateGoodsStock(GoodsStock goodsStock) {
        goodsStockDAO.updateGoodsStock(goodsStock);
    }

    @Override
    public List<GoodsStock> findSoldItems(long goodsId, boolean flag) {
        return goodsStockDAO.findSoldItems(goodsId,flag);
    }

    @Override
    public List<GoodsStock> findByOrder_id(long orderId) {
        return goodsStockDAO.findByOrder_id(orderId);
    }
}
